package com.appleyk.mall.config;

import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;

/**
 * <p>越努力，越幸运</p>
 * security配置
 * @author appleyk
 * @version V.0.1.1
 * @blob https://blog.csdn.net/appleyk
 * @date created on  5:17 下午 2021/1/10
 */
@EnableWebSecurity
// 开启方法授权方式
@EnableGlobalMethodSecurity(securedEnabled = true,prePostEnabled = true)
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
    // 安全拦截机制（很重要）
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        /**
         * CSRF是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法
         * 跟跨网站脚本（XSS）相比，XSS 利用的是用户对指定网站的信任，
         * CSRF 利用的是网站对用户网页浏览器的信任。
         * 关闭，否则用户身份验证时要传csrf token
         */
        http.csrf().disable().authorizeRequests()
                // 访问资源的api必须通过认证才可以
                .antMatchers("/r/**").authenticated()
                // 除此之外，其余api访问均放行（即不需要身份认证和授权）
                .anyRequest().permitAll();
    }
}
